import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router'

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})
const checkTimeout = () => {
  const loginTime = localStorage.getItem('loginTime')
  const now = Date.now()
  return (now - loginTime) > (2 * 1000 * 60 * 60)
}
service.interceptors.request.use(
  config => {
    if (store.getters.token) {
      // 判定是否超时
      // 3000 3秒
      // bug处理：封装成一个函数，调用的时候注意要加（）
      if (checkTimeout()) {
        // 超时：退出登录
        // 超时：回到登录页
        store.dispatch('user/logout')
        router.push('/login')
        return Promise.reject(new Error('已超时（主动）'))
      }
      config.headers.Authorization = `Bearer ${store.getters.token}`
    }
    return config
  }
)
service.interceptors.response.use(res => {
  console.log('拦截器的数据', res)
  const { success, data, message } = res.data
  if (success) {
    return data
  } else {
    Message.error(message)
    return Promise.reject(new Error('报个错'))
  }
}, err => {
  console.dir(err)
  if (err.response && err.response.data.code === 10002) {
    store.dispatch('user/logout')
    router.push('/login')
  }
  Message.error(err.message)
})
export default service
// token错误主动处理
// 时间戳
// 现在的时间-登录的时间
// 登录的时间-记录下来-准备使用token的时候
// 发起请求的时候：判断时间有没有过期

